Existing computer programs known as “road-mapping” programs provide digital maps, often complete with detailed road networks down to the city-street level. Typically, a user can input a location and the road-mapping program will display an on-screen map of the selected location. Several existing road-mapping products typically include the ability to calculate a “best route” between two locations. In other words, the user can input two locations, and the road-mapping program will compute the travel directions from the source location to the destination location. The directions are typically based on distance, travel time, and certain user preferences, such as a speed at which the user likes to drive, or the degree of scenery along the route. Computing the best-route between locations may require significant computational time and resources.
Existing road-mapping programs employ variants of a method attributed to E. Dijkstra to compute shortest paths. Dijkstra's method is described by Cormen, Leiserson and Rivest in Introduction to Algorithms, MIT Press, 1990, pp. 514-531, which is hereby incorporated by reference in its entirety for all that it teaches without exclusion of any part thereof. Note that in this sense “shortest” means “least cost” because each road segment is assigned a cost or weight not necessarily directly related to the road segment's length. By varying the way the cost is calculated for each road, shortest paths can be generated for the quickest, shortest, or preferred routes.
Dijkstra's original method, however, is not always efficient in practice, due to the large number of locations and possible paths that are scanned. Instead, many modern road-mapping programs use heuristic variations of Dijkstra's method, including A* search (i.e., heuristic or goal-directed search) in order to “guide” the shortest-path computation in the right general direction. Such heuristic variations typically involve estimating the weights of paths between intermediate locations and the destination. A good estimate reduces the number of locations and road segments that must be considered by the road-mapping program, resulting in a faster computation of shortest paths; a bad estimate can have the opposite effect, and increase the overall time required to compute shortest paths. If the estimate is a lower-bound on distances with certain properties, A* search computes the optimal (shortest) path. The closer these lower-bounds are to the actual path weights, the better the estimation and the algorithm performance. Lower-bounds that are very close to the actual values being bound are said to be “good.” Previously known heuristic variations use lower-bound estimation techniques such as Euclidean distance (i.e., “as the crow flies”) between locations, which are not very good.